//package com.example.springbooteasycode.utils.tablepdf;
//
//import com.aspose.words.Document;
//import com.aspose.words.License;
//import com.aspose.words.PdfSaveOptions;
//import com.aspose.words.SaveFormat;
//import org.apache.poi.xwpf.usermodel.*;
//import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
//import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
//import org.springframework.core.io.ClassPathResource;
//
//import java.io.*;
//import java.math.BigInteger;
//import java.util.Objects;
//
///**
// * 生成问卷报告word文件，并且转换为pdf
// *
// *
// * poi + aspose-words
// *
// * @author Csa
// * @date 2024/10/22 15:45
// */
//public class DemoFinallyByteNew {
//    public static void main(String[] args) throws Exception {
//        XWPFDocument document = new XWPFDocument();
//
//        // 设置问卷基础信息表格
//        questionnaireInfoTableToDocument(document);
//
////        // 输出到文件
////        try (FileOutputStream out = new FileOutputStream("/Users/boykchen/Desktop/demoFinallyByteFile.docx")) {
////            document.write(out);
////        }
////
////        wordToPdf();
//
//
//        // 将Word文档转换为PDF字节数组
//        byte[] pdfBytes = wordToPdfBytes(document);
//
//        // 将PDF字节数组保存到本地文件
//        String outputFilePath = "/Users/boykchen/Desktop/wordToPdfDemoFinallyByteFileNew.pdf";
//        savePdfToFile(pdfBytes, outputFilePath);
//
//        System.out.println("Word to PDF conversion completed successfully.");
//    }
//
//    private static void questionnaireInfoTableToDocument(XWPFDocument document) {
//        // 实现问卷基础信息表格的创建
//        XWPFTable table = document.createTable(4, 2);
//
//        // 设置表格的列宽
//        table.getCTTbl().addNewTblPr().addNewTblW().setW(BigInteger.valueOf(8300)); // 总宽度为5000
//
//        // 设置名称
//        XWPFTableRow row = table.getRow(0);
//        row.setHeight(120);
//        XWPFTableCell cell00 = row.getCell(0);
//        setTableCellStyleHead20(cell00, "名称");
//
//        XWPFTableCell cell01 = row.getCell(1);
//        setTableCellStyleContent20(cell01, "物业服务满意度2024年度调查");
//
//        // 设置时间
//        XWPFTableRow row1 = table.getRow(1);
//        row1.setHeight(120);
//        XWPFTableCell cell10 = row1.getCell(0);
//        setTableCellStyleHead20(cell10, "时间");
//
//        XWPFTableCell cell11 = row1.getCell(1);
//        setTableCellStyleContent20(cell11, "2024-10-12 16:41:06至 2024-10-14 09:12:14");
//
//        // 设置发布者
//        XWPFTableRow row2 = table.getRow(2);
//        row2.setHeight(120);
//        XWPFTableCell cell20 = row2.getCell(0);
//        setTableCellStyleHead20(cell20, "发布者");
//
//        XWPFTableCell cell21 = row2.getCell(1);
//        setTableCellStyleContent20(cell21, "新物业");
//
//        // 设置收集数
//        XWPFTableRow row3 = table.getRow(3);
//        row3.setHeight(120);
//        XWPFTableCell cell30 = row3.getCell(0);
//        setTableCellStyleHead20(cell30, "收集数");
//
//        XWPFTableCell cell31 = row3.getCell(1);
//        setTableCellStyleContent20(cell31, "4份");
//
//    }
//
//    private static void setTableCellStyleHead20(XWPFTableCell cell, String title) {
//        setTableCellStyleHead(cell, title, 20, 2000);
//    }
//
//    /**
//     * 设置TableCell-表头样式
//     *
//     * @param cell
//     */
//    private static void setTableCellStyleHead(XWPFTableCell cell, String title, Integer fontSize, Integer width) {
//        // 垂直对齐
//        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
//        // 设置颜色rgb值
//        cell.setColor("f7f8fa");
//        // 水平对齐
//        cell.getParagraphs().get(0).setAlignment(ParagraphAlignment.CENTER);
//
//        // 设置单元格宽度
//        CTTblWidth ctTblWidth = cell.getCTTc().addNewTcPr().addNewTcW();
//        ctTblWidth.setW(BigInteger.valueOf(width));
//        //设置宽度的度量单位为 DXA，即字符单位。
//        ctTblWidth.setType(STTblWidth.DXA);
//
//        //设置单元格样式
//        XWPFParagraph paragraph = cell.getParagraphs().get(0);
//
//        if (paragraph == null) {
//            paragraph = cell.addParagraph();
//        }
//        XWPFRun run = paragraph.createRun();
//        run.setText(title);
//        // 设置字体大小
//        run.setFontSize(fontSize);
//        run.setColor("909399");
//    }
//
//
//    private static void setTableCellStyleContent20(XWPFTableCell cell, String value) {
//        setTableCellStyleContent(cell, value, 20, null);
//    }
//
//    /**
//     * 设置TableCell-内容样式
//     *
//     * @param cell
//     */
//    private static void setTableCellStyleContent(XWPFTableCell cell, String value, Integer fontSize, Integer width) {
//        cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
//        cell.getParagraphs().get(0).setAlignment(ParagraphAlignment.CENTER);
//
//        // 设置单元格宽度
//        if (Objects.nonNull(width)) {
//            CTTblWidth ctTblWidth = cell.getCTTc().addNewTcPr().addNewTcW();
//            ctTblWidth.setW(BigInteger.valueOf(width));
//            //设置宽度的度量单位为 DXA，即字符单位。
//            ctTblWidth.setType(STTblWidth.DXA);
//        }
//
//        //设置单元格样式
//        XWPFParagraph paragraph = cell.getParagraphs().get(0);
//        if (paragraph == null) {
//            paragraph = cell.addParagraph();
//        }
//        XWPFRun run = paragraph.createRun();
//        run.setText(value);
//        // 设置字体大小为13
//        run.setFontSize(fontSize);
//    }
//
//
//    private static void wordToPdf() throws IOException {
//
//        String inputFilePath = "/Users/boykchen/Desktop/demoFinallyByteFile.docx";
//        String outputFilePath = "/Users/boykchen/Desktop/wordToPdfDemoFinallyByteFile.pdf";
//
//        try (FileInputStream fis = new FileInputStream(inputFilePath);
//             FileOutputStream fos = new FileOutputStream(outputFilePath)) {
//
//            // 设置 Aspose.Words 许可证
//            ClassPathResource resource = new ClassPathResource("license.xml");
//            InputStream licenseStream = resource.getInputStream();
//            // 设置 Aspose.Words 许可证
//            License license = new License();
//            license.setLicense(licenseStream);
//
//            // 加载Word文档
//            Document doc = new Document(fis);
//
//            // 设置PDF保存选项（可选）
//            PdfSaveOptions saveOptions = new PdfSaveOptions();
//            // 可以在这里设置各种PDF保存选项，例如压缩级别、图像质量等
//
//            // 转换为PDF并保存
//            doc.save(fos, SaveFormat.PDF);
//
//            System.out.println("Word to PDF conversion completed successfully.");
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//
//    private static byte[] wordToPdfBytes(XWPFDocument document) throws Exception {
//        try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
//
//            // 设置 Aspose.Words 许可证
//            ClassPathResource resource = new ClassPathResource("license.xml");
//            InputStream licenseStream = resource.getInputStream();
//            // 设置 Aspose.Words 许可证
//            License license = new License();
//            license.setLicense(licenseStream);
//
//            // 将Word文档写入输出流而不是文件
//            document.write(baos);
//
//            // 使用Aspose加载Word文档
//            Document doc = new Document(new ByteArrayInputStream(baos.toByteArray()));
//
//            // 设置PDF保存选项（可选）
//            PdfSaveOptions saveOptions = new PdfSaveOptions();
//
//            // 转换为PDF并保存到字节数组输出流
//            doc.save(baos, SaveFormat.PDF);
//
//            return baos.toByteArray();
//        } catch (Exception e) {
//            throw new RuntimeException("Error converting Word to PDF", e);
//        }
//    }
//
//    private static void savePdfToFile(byte[] pdfBytes, String outputFilePath) throws IOException {
//        try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {
//            fos.write(pdfBytes);
//        } catch (IOException e) {
//            throw new IOException("Error writing PDF to file", e);
//        }
//    }
//
//}
